package cl.clientesoasoap;

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONObject;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import cl.pojo.DatosPublicaciones;

public class ResultadoFindPublicacion extends ListActivity {

	private ArrayList<DatosPublicaciones> lista_findPublicaciones = null;
	private FindPubAdapter m_adapter;
	String datos;

	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		
		this.setContentView(R.layout.resultadofind_list);

		//carga los datos del array al adapter
		lista_findPublicaciones = new ArrayList<DatosPublicaciones>();
		this.m_adapter = new FindPubAdapter(this,R.layout.lista_interna, lista_findPublicaciones);
		setListAdapter(this.m_adapter);
		
		lista_findPublicaciones.clear();
		m_adapter.clear();

		//recibe los parametros que vienen desde la clase anterior
		Bundle extras = getIntent().getExtras();

		if(extras !=null && !extras.getString("datos").equals("[]"))
		{
			datos = extras.getString("datos");
			inicializarlista(datos);

		}

	}
	
	@Override
	public void onStop(){
		m_adapter.clear();
		super.onStop();
	}

	public class FindPubAdapter extends ArrayAdapter<DatosPublicaciones> {

		private ArrayList<DatosPublicaciones> items;

		public FindPubAdapter(Context context, int textViewResourceId, ArrayList<DatosPublicaciones> lista_findPublicaciones) {

			super(context, textViewResourceId, lista_findPublicaciones);
			this.items = lista_findPublicaciones;

		}



		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			View item = convertView;

			if (item == null) {
				LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
				item = vi.inflate(R.layout.lista_interna, null);
			}

			DatosPublicaciones publicacion = items.get(position);
			if (publicacion != null) {

				// //poblamos la lista de elementos

				TextView campo1 = (TextView) item.findViewById(R.id.campo1);

				TextView campo2 = (TextView) item.findViewById(R.id.campo2);


				if (campo1 != null) {
					campo1.setText(publicacion.getMonto());

				}
				if (campo2 != null) {
					campo2.setText(publicacion.getDescripcion());
				}



			}
			return item;
		}


	}


	private void inicializarlista(String json) {


		try {
			lista_findPublicaciones.clear();
			JSONArray jsonArray = null;
			lista_findPublicaciones = new ArrayList<DatosPublicaciones>();
			jsonArray = new JSONArray(json);

			/*
			 * Recorrer JSON con un for
			 */

			Log.i("informacion", "Verificando datos nulos");
			if (jsonArray != null) {
				Log.i("informacion", "json no nulo, entrando al llenado de la lista");
				for (int i = 0; i < jsonArray.length(); i++) {

					JSONObject jo = (JSONObject) jsonArray.get(i);

					DatosPublicaciones publicacion = new DatosPublicaciones();

					//se a�aden los datos del Json a la lista
					publicacion.setMonto("Monto : "+jo.getString("monto"));
					publicacion.setDescripcion("Descripci�n : "+jo.getString("descripcion"));


					// A�adimos los libros a la lista
					lista_findPublicaciones.add(publicacion);

				}
			} else {

				Log.i("informacion", "datos nulos, colocando como NO ENCONTRADO");
				DatosPublicaciones publicacion = new DatosPublicaciones();

				//se a�aden los datos del Json a la lista
				publicacion.setMonto("");
				publicacion.setDescripcion("");
				publicacion.setRut("");


				// A�adimos los libros a la lista
				lista_findPublicaciones.add(publicacion);
			}


		} catch (Exception e) {

			Log.i("informacion", "fallo try, impresion mensaje error");
			Log.e("BACKGROUND_PROC", e.getMessage());

			DatosPublicaciones publicacion = new DatosPublicaciones();
			publicacion.setDescripcion("ERROR CONECCION,");
			lista_findPublicaciones.add(publicacion);

		}

		m_adapter.clear();
		if (lista_findPublicaciones != null && lista_findPublicaciones.size() > 0) {
			for (int i = 0; i < lista_findPublicaciones.size(); i++)
				m_adapter.add(lista_findPublicaciones.get(i));
		}

		m_adapter.notifyDataSetChanged();

	}


	/**
	 * Menu opcional Volver
	 */
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.opcionmenucontex, menu);
		return true;
	}

	/**
	 * Evento que se genera al seleccionar alguna opcion en el menu opcional
	 */
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {

		switch (item.getItemId()) {
		case R.id.ivolver:

			Intent i = new Intent(ResultadoFindPublicacion.this,TabSoaOferta.class);
			startActivity(i);
			onStop();
			finish();

			return true;
		default:
			return super.onOptionsItemSelected(item);
		}
	}
}

